/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.cpal.entrenamiento.service.impl;

import com.cpal.entrenamiento.dao.ICategoriaDAO;
import com.cpal.entrenamiento.dao.IEjercicioDAO;
import com.cpal.entrenamiento.dao.IEstructuraDAO;
import com.cpal.entrenamiento.dao.IPalabraDAO;
import com.cpal.entrenamiento.dao.IRimaColumnaDAO;
import com.cpal.entrenamiento.dao.ISubCategoriaDAO;
import com.cpal.entrenamiento.dao.ITareaDAO;
import com.cpal.entrenamiento.entity.Categoria;
import com.cpal.entrenamiento.entity.Ejercicio;
import com.cpal.entrenamiento.entity.Estructura;
import com.cpal.entrenamiento.entity.RimaColumna;
import com.cpal.entrenamiento.entity.SubCategoria;
import com.cpal.entrenamiento.entity.Tarea;
import com.cpal.entrenamiento.service.IEjercicioService;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.context.annotation.ScopedProxyMode;
import org.springframework.stereotype.Service;

/**
 *
 * @author onoel
 */
@Service("ejercicioService")
@Scope(value = "singleton", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class EjercicioService implements IEjercicioService {

    @Autowired
    IEjercicioDAO ejercicioDAO;
    @Autowired
    ICategoriaDAO categoriaDAO;
    @Autowired
    ISubCategoriaDAO subCategoriaDAO;
    @Autowired
    ITareaDAO tareaDAO;
    @Autowired
    IEstructuraDAO estructuraDAO;
    @Autowired
    IRimaColumnaDAO rimaColumnaDAO;
    @Autowired
    IPalabraDAO palabraDAO;
    
//CUS13
    @Override
    public List<Ejercicio> buscarEjercicio(Ejercicio ejercicio) throws Exception {
        return ejercicioDAO.buscarEjercicio(ejercicio);
    }
//CUS13
    @Override
    public List<Categoria> obtenerCategoria() throws Exception {
        return categoriaDAO.obtenerCategorias();
    }
//CUS13
    @Override
    public List<SubCategoria> obtenerSubCategoria(Integer codigoCategoria) throws Exception {
        return subCategoriaDAO.obtenerSubCategorias(codigoCategoria);
    }
//CUS13
    @Override
    public List<Tarea> obtenerTarea(Integer codigoSubCategoria) throws Exception {
        return tareaDAO.obtenerTareas(codigoSubCategoria);
    }
//CUS13
    @Override
    public void eliminarEjercicio(Ejercicio ejercicio) throws Exception {
        ejercicioDAO.eliminarEjercicio(ejercicio);
    }
//CUS13
    @Override
    public void modificarEjercicio(Ejercicio ejercicio) throws Exception {
        ejercicioDAO.actualizarEjercicio(ejercicio);
        //estructuraDAO.actualizarEstructura(ejercicio.getRimaColumna());
        rimaColumnaDAO.actualizarRimaColumna(ejercicio.getRimaColumna());
    }

    @Override
    public Ejercicio visualizar(Ejercicio ejercicio) throws Exception {
        throw new UnsupportedOperationException("Not supported yet.");
    }
//CUS15
    @Override
    public void insertarEjercicio(Ejercicio ejercicio) throws Exception {
              
        Integer codigo = estructuraDAO.insertarEstructura(ejercicio.getRimaColumna());
        //Estructura codigoEstructura = estructuraDAO.lastInsert();
        ejercicio.getRimaColumna().setCodigo(codigo);
        rimaColumnaDAO.insertarRimaColumna(ejercicio.getRimaColumna());
        ejercicioDAO.insertarEjercicio(ejercicio);
    }
//CUS13
    @Override
    public Ejercicio obtenerEjercicio(Ejercicio ejercicio) throws Exception {
        List<Ejercicio> ejercicios = ejercicioDAO.buscarEjercicioxCodigo(ejercicio);
        Ejercicio cEjercicio = ejercicios.get(0);
        RimaColumna rimaColumna = rimaColumnaDAO.buscarRimaColumna(cEjercicio.getRimaColumna());
        rimaColumna.setPalabraA1(palabraDAO.buscarxCodigo(rimaColumna.getPalabraA1()));
        rimaColumna.setPalabraA2(palabraDAO.buscarxCodigo(rimaColumna.getPalabraA2()));
        rimaColumna.setPalabraA3(palabraDAO.buscarxCodigo(rimaColumna.getPalabraA3()));
        rimaColumna.setPalabraA4(palabraDAO.buscarxCodigo(rimaColumna.getPalabraA4()));
        rimaColumna.setPalabraB1(palabraDAO.buscarxCodigo(rimaColumna.getPalabraB1()));
        rimaColumna.setPalabraB2(palabraDAO.buscarxCodigo(rimaColumna.getPalabraB2()));
        rimaColumna.setPalabraB3(palabraDAO.buscarxCodigo(rimaColumna.getPalabraB3()));
        rimaColumna.setPalabraB4(palabraDAO.buscarxCodigo(rimaColumna.getPalabraB4()));
        cEjercicio.setRimaColumna(rimaColumna);
        
        return cEjercicio;
    }
    
}
